package com.example.demojimmer.domain.userauth.repositorise;

import com.example.demojimmer.domain.userauth.model.entity.StUser;
import org.babyfish.jimmer.spring.repository.JRepository;
import org.springframework.lang.Nullable;

public interface StUserRepository extends JRepository<StUser, Long> {

    /**
     * 查询单个实体：
     *
     * findBy<Property>：根据指定属性的值查询单个实体。如果存在多个匹配项，将抛出异常。
     * findOneBy<Property>：与 findBy<Property> 类似，但返回 Optional 类型，如果没有找到匹配项，则返回 Optional.empty()。
     * 查询多个实体：
     *
     * find<Property>：根据指定属性的值查询多个实体，返回一个列表。
     * 存在性检查：
     *
     * existsBy<Property>：检查是否存在具有指定属性值的实体，并返回布尔值。
     * 计数查询：
     *
     * count<Property>：计算具有指定属性值的实体数量。
     * 删除操作：
     *
     * deleteBy<Property>：根据指定属性的值删除实体。
     * 自定义查询：
     *
     * 使用 @Query 注解可以执行自定义的查询，无论是 JPQL、SQL 还是其他查询语言。
     * 分页和排序：
     *
     * 方法名中包含 Page 或 Sort 可以返回分页或排序的结果。
     * 聚合函数：
     *
     * 可以使用方法名约定来执行聚合函数，如 sum<Property>、avg<Property>、max<Property>、min<Property>。
     * 查询并返回统计信息：
     *
     * 方法名可以包含统计函数，如 countDistinct<Property>。
     * 查询并返回分组信息：
     *
     * 方法名可以包含 groupby<Property> 来指定分组。
     *
     */

    /**
     * @param email
     * @return
     */
    StUser findByEmail(@Nullable String email);

}
